<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 300px;
            height: 300px;
            background-color: #ccc;
            color: white;
            text-align: center;
            font-size: 50px;
        }
    </style>
</head>
<body>
    <!-- 在单位时间内，频繁触发事件，只执行一次 -->
    <div class="box"></div>
</body>
</html>
<script>
      let i = 0
      const box =  document.querySelector('.box')
      function moveFn(){
        i++
        this.innerHTML = i
      }
      function throttle(fn,t){
        let timerId;
        //  这个函数会不断地触发
        return function (){
            // 判断是否开启过定时器，如果没有就开启
             if(!timerId){
                //  开启定时器  => j进房间关门
                timerId = setTimeout(() =>{
                    // 改变 this  指向
                    fn().call(this)

                    // 清空 timerId 变量  =>  出房间开门
                    timerId = null
                },t)
             }
        }
      }
    box.addEventListener('mousemove',throttle(moveFn,1000))

    /**
     * 节流： 判断内存中有没有正在开启的定时器，如果有就不能再开了，
     * 如果没有就开启定时器，定时器执行时要清楚定时器的 id 标识
     * 通常使用在高频事件中：鼠标移动 mousemove、页面尺寸缩放 resize  滚动条滚动 scroll
     * **/
</script>